package com.hmall.redis;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

@RestController
public class RedisTest {
    /**
     * 测试
     */
    @RequestMapping("/testJedis")
    @ResponseBody
    public String testJedis(String index) {
        // redis多数据源时使用
        String redisHost = "42.192.16.23";
        int redisPort = 6379;
        // 定义连接 池配置
        JedisPoolConfig confid = new JedisPoolConfig();
        confid.setMaxTotal(16);//最大连接数，默认8
        confid.setMaxIdle(60);//最大空闲时间，连接后不用，超过时间自动释放。
        //构建jedis连接池
//        JedisPool jedisPool = new JedisPool(confid,host,port,);
        String redisPassword = "6WgGj2acYBSgeT8NniQd";
        JedisPool jedisPool = new JedisPool(confid, redisHost, redisPort, 1200, redisPassword,13);
        //从池中获取连接
        Jedis resource = jedisPool.getResource();
        //执行redis操作
        for (int i = 0; i < 100; i++) {
            resource.set("pool13:", "jedis");
            resource.zadd("zadd:", 1L, "fix");
            resource.zadd("zadd:", 2L, "fix2");
            resource.zadd("zadd:", 3L, "fix3");
            resource.zadd("zadd:", 4L, "fix4");
            resource.get("pool");

            String pool = resource.get("pool");
        }
        //释放资源
        resource.close();//(不是关，而是将连接还回池中)
        jedisPool.close();//关闭池，服务停止时关

        JedisPool jedisPool2 = new JedisPool(confid, redisHost, redisPort, 1200, redisPassword, 14);
        //从池中获取连接
        Jedis resource2 = jedisPool2.getResource();
        //执行redis操作
        for (int i = 0; i < 100; i++) {
            resource2.set("pool14:", "jedis");
            resource2.zadd("zadd:", 1L, "fix");
            resource2.zadd("zadd:", 2L, "fix2");
            resource2.zadd("zadd:", 3L, "fix3");
            resource2.zadd("zadd:", 4L, "fix4");
            resource2.get("pool");

            String pool = resource2.get("pool");
        }
        //释放资源
        resource2.close();//(不是关，而是将连接还回池中)
        jedisPool2.close();//关闭池，服务停止时关

        // 不使用连接池
//        Jedis jedis = new Jedis(redisHost, redisPort);
//        jedis.auth(redisPassword);
//        jedis.select(0);
//        jedis.set("a", "a");
//        for (int i=0;i<100; i++) {
//            jedis.set("pool", "jedis");
//            jedis.zadd("zadd", 1L, "fix");
//            jedis.zadd("zadd", 2L, "fix2");
//            jedis.zadd("zadd", 3L, "fix3");
//            jedis.zadd("zadd", 4L, "fix4");
//            jedis.get("pool");
//
//            String pool = jedis.get("pool");
//        }
//        jedis.close();
//
//        Jedis jedis2 = new Jedis(redisHost, redisPort);
//        jedis2.auth(redisPassword);
//        jedis2.select(0);
//        jedis2.set("a", "a");
//        for (int i=0;i<100; i++) {
//            jedis2.set("pool", "jedis");
//            jedis2.zadd("zadd", 1L, "fix");
//            jedis2.zadd("zadd", 2L, "fix2");
//            jedis2.zadd("zadd", 3L, "fix3");
//            jedis2.zadd("zadd", 4L, "fix4");
//            jedis2.get("pool");
//
//            String pool = jedis2.get("pool");
//        }
//        jedis2.close();
        return String.format("<h5>redis操作成功<h5>");
    }
}
